//package com.qihang.oms.api.utils.http;
//
//import com.qihang.oms.api.constant.Constants;
//import com.qihang.oms.api.utils.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import javax.net.ssl.*;
//import java.io.*;
//import java.net.ConnectException;
//import java.net.SocketTimeoutException;
//import java.net.URL;
//import java.net.URLConnection;
//import java.nio.charset.StandardCharsets;
//import java.security.cert.X509Certificate;
//
///**
// * 通用http发送方法
// *
// * @author qihang
// */
//public class HttpUtils
//{
//    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
//
//    /**
//     * 向指定 URL 发送GET方法的请求
//     *
//     * @param url 发送请求的 URL
//     * @return 所代表远程资源的响应结果
//     */
//    public static String sendGet(String url)
//    {
//        return sendGet(url, StringUtils.EMPTY);
//    }
//
//    /**
//     * 向指定 URL 发送GET方法的请求
//     *
//     * @param url 发送请求的 URL
//     * @param param 请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
//     * @return 所代表远程资源的响应结果
//     */
//    public static String sendGet(String url, String param)
//    {
//        return sendGet(url, param, Constants.UTF8);
//    }
//
//    /**
//     * 向指定 URL 发送GET方法的请求
//     *
//     * @param url 发送请求的 URL
//     * @param param 请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
//     * @param contentType 编码类型
//     * @return 所代表远程资源的响应结果
//     */
//    public static String sendGet(String url, String param, String contentType)
//    {
//        StringBuilder result = new StringBuilder();
//        BufferedReader in = null;
//        try
//        {
//            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
//            log.info("sendGet - {}", urlNameString);
//            URL realUrl = new URL(urlNameString);
//            URLConnection connection = realUrl.openConnection();
//            connection.setRequestProperty("accept", "*/*");
//            connection.setRequestProperty("connection", "Keep-Alive");
//            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            connection.connect();
//            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
//            String line;
//            while ((line = in.readLine()) != null)
//            {
//                result.append(line);
//            }
//            log.info("recv - {}", result);
//        }
//        catch (ConnectException e)
//        {
//            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
//        }
//        catch (SocketTimeoutException e)
//        {
//            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
//        }
//        catch (IOException e)
//        {
//            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
//        }
//        catch (Exception e)
//        {
//            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
//        }
//        finally
//        {
//            try
//            {
//                if (in != null)
//                {
//                    in.close();
//                }
//            }
//            catch (Exception ex)
//            {
//                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
//            }
//        }
//        return result.toString();
//    }
//
//    /**
//     * 向指定 URL 发送POST方法的请求
//     *
//     * @param url 发送请求的 URL
//     * @param param 请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
//     * @return 所代表远程资源的响应结果
//     */
//    public static String sendPost(String url, String param)
//    {
//        PrintWriter out = null;
//        BufferedReader in = null;
//        StringBuilder result = new StringBuilder();
//        try
//        {
//            log.info("sendPost - {}", url);
//            URL realUrl = new URL(url);
//            URLConnection conn = realUrl.openConnection();
//            conn.setRequestProperty("accept", "*/*");
//            conn.setRequestProperty("connection", "Keep-Alive");
//            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            conn.setRequestProperty("Accept-Charset", "utf-8");
//            conn.setRequestProperty("contentType", "utf-8");
//            conn.setDoOutput(true);
//            conn.setDoInput(true);
//            out = new PrintWriter(conn.getOutputStream());
//            out.print(param);
//            out.flush();
//            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
//            String line;
//            while ((line = in.readLine()) != null)
//            {
//                result.append(line);
//            }
//            log.info("recv - {}", result);
//        }
//        catch (ConnectException e)
//        {
//            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
//        }
//        catch (SocketTimeoutException e)
//        {
//            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
//        }
//        catch (IOException e)
//        {
//            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
//        }
//        catch (Exception e)
//        {
//            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
//        }
//        finally
//        {
//            try
//            {
//                if (out != null)
//                {
//                    out.close();
//                }
//                if (in != null)
//                {
//                    in.close();
//                }
//            }
//            catch (IOException ex)
//            {
//                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
//            }
//        }
//        return result.toString();
//    }
//
//    public static String sendSSLPost(String url, String param)
//    {
//        StringBuilder result = new StringBuilder();
//        String urlNameString = url + "?" + param;
//        try
//        {
//            log.info("sendSSLPost - {}", urlNameString);
//            SSLContext sc = SSLContext.getInstance("SSL");
//            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
//            URL console = new URL(urlNameString);
//            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
//            conn.setRequestProperty("accept", "*/*");
//            conn.setRequestProperty("connection", "Keep-Alive");
//            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            conn.setRequestProperty("Accept-Charset", "utf-8");
//            conn.setRequestProperty("contentType", "utf-8");
//            conn.setDoOutput(true);
//            conn.setDoInput(true);
//
//            conn.setSSLSocketFactory(sc.getSocketFactory());
//            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
//            conn.connect();
//            InputStream is = conn.getInputStream();
//            BufferedReader br = new BufferedReader(new InputStreamReader(is));
//            String ret = "";
//            while ((ret = br.readLine()) != null)
//            {
//                if (ret != null && !"".equals(ret.trim()))
//                {
//                    result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
//                }
//            }
//            log.info("recv - {}", result);
//            conn.disconnect();
//            br.close();
//        }
//        catch (ConnectException e)
//        {
//            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
//        }
//        catch (SocketTimeoutException e)
//        {
//            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
//        }
//        catch (IOException e)
//        {
//            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
//        }
//        catch (Exception e)
//        {
//            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
//        }
//        return result.toString();
//    }
//
//    private static class TrustAnyTrustManager implements X509TrustManager
//    {
//        @Override
//        public void checkClientTrusted(X509Certificate[] chain, String authType)
//        {
//        }
//
//        @Override
//        public void checkServerTrusted(X509Certificate[] chain, String authType)
//        {
//        }
//
//        @Override
//        public X509Certificate[] getAcceptedIssuers()
//        {
//            return new X509Certificate[] {};
//        }
//    }
//
//    private static class TrustAnyHostnameVerifier implements HostnameVerifier
//    {
//        @Override
//        public boolean verify(String hostname, SSLSession session)
//        {
//            return true;
//        }
//    }
//}